🧭 Kubernetes | October 06, 2021
중요!
여기서 중요한 점은 파드가 아닌 컨테이너 자체가 재시작 되는 것이며, 따라서 IP의 주소 또한 바뀌지 않습니다.
httpGet
: 지정한 IP 주소, port, path에 HTTP GET 요청을 보내, 해당 컨테이너가 응답하는지를 확인합니다.
restart
시켜주는 것입니다.tcpSocket
: 지정된 포트에 TCP 연결을 시도합니다.
restart
시켜주는 것입니다.exec
: exec 명령을 전달하고 명령의 종료코드가 0이 아니면 컨테이너를 다시 시작합니다.apiVersion: v1
kind: Pod
metadata:
name: nginx-pod-liveness
spec:
containers:
- name: nginx-container
image: nginx:1.14
ports:
- containerPort: 80
protocol: TCP
livenessProbe:
httpGet:
path: /
port: 80
pod 생성 및 상세정보 출력
delay
: pod 구동 후 0초 후 상태 체크를 실행하는 것을 의미함timeout
: health-check 한 후 응답을 기다리는 1초 동안 반응하지 않으면 실패로 간주period
: 10초마다 한번씩 상태 체크success
: 1번만 성공하면 성공으로 간주failure
: 연속에서 3번 요청이 실패하면 컨테이너 재시작$ kubectl create -f pod-nginx-liveness.yaml
$ kubectl describe pods nginx-pod-liveness
파드 상세 정보를 yaml 파일 확인
$ kubectl get pods nginx-pod-liveness -o yaml
const http = require('http')
const os = require('os')
console.log('Kubia server starting...')
var requestCount = 0
var handler = function(request, response) {
console.log('Received request from ' + request.connection.remoteAddress)
requestCount++
if (requestCount > 5) {
response.writeHead(500)
response.end("I'm not well. Please restart me!")
return
}
response.writeHead(200)
response.end("You've hit " + os.hostname() + '\n')
}
var www = http.createServer(handler)
www.listen(8080)
apiVersion: v1
kind: Pod
metadata:
name: liveness-pod
spec:
containers:
- name: unhealthy-container
image: smlinux/unhealthy
ports:
- containerPort: 8080
protocol: TCP
livenessProbe:
httpGet:
path: /
port: 8080
50초 동안은 오류로 취급안하고 정상 작동하는 모습
period
시간은 10초이고, 5번 응답하는 이미지 이므로 대략 50초 가량은 오류가 나지 않음50초 이후부터 오류가 발생하고, 3번 이상 오류 발생 시 컨테이너가 재생성되는 모습